#ifndef FACE_H
#define FACE_H

#include <QString>
#include <QList>
#include <QWidget>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QUrlQuery>

#include <QLabel>
#include <QPixmap>
#include <QByteArray>
#include <QJsonDocument>
#include <QJsonObject>
#include <QDebug>
#include <QJsonArray>
#include <QBuffer>
#include <QUdpSocket>

#include "login.h"
// 定义结构体


typedef struct {
    QString groupId;   // 用户组 ID
    QString userId;    // 用户 ID
    QString userInfo;  // 用户信息
    double score;      // 分数
} UserInfo;

namespace Ui {
class face;
}

// 类定义
class face : public QWidget
{
    Q_OBJECT

public:
    double maxscore = 0 ;  //人脸识别匹配率
    bool isRequestInProgress = false;

    explicit face(QWidget *parent = nullptr);
    ~face();

    // 公共方法
    QString pixmapToBase64(const QPixmap &pixmap); // 将图片转换为 Base64
    void requestAccessToken();                    // 获取 Access Token


    void sendFaceRecognitionRequest(const QString &base64Image); // 发送人脸识别请求
    bool getuser();
    UserInfo userInfoData; // 在类内定义一个 UserInfo 类型的变量

     QUdpSocket *udpSocket;



private:
     QImage image;

    QNetworkAccessManager *networkManager = nullptr; // 网络管理器
    QString accessToken;                             // Access Token
    QString lastBase64Image;                         // 保存 Base64 图片数据
    Ui::face *ui;

signals:
    void  getimg(QPixmap img_face);
     void  log_in_yes(QString user);
private slots:
    void onAccessTokenReceived();     // Access Token 回调
    void onFaceRecognitionFinished(); // 人脸识别回调
private slots:
    void readPendingDatagrams();


    void on_pushButton_2_clicked();
};

#endif // FACE_H
